#!/bin/bash

# 使用方法 ./entrypoint.sh -h ip地址 -p 端口号1,端口号2,端口号3... -c '要在容器开启时执行的命令'
# 作用，对ip地址对应的端口号进行连通性检查，检查所有的端口号是连通的后执行命令


# 写一个端口检测函数，确保端口号是连通的

# 使用方法 wait_for 127.0.0.1 要测试的端口号

wait_for()
{
    # 这里面的while是条件为0才会继续，而nc执行成功返回0
    while ! nc -z $1 $2
    do
        echo $1
        echo "$2 端口连接失败，休眠等待！";
        sleep 3;
    done
    echo "$1:$2 检测成功！";
}

# 获取参数
declare ip ports command
while getopts "h:p:c:" arg
do
    case $arg in
        h)
            ip=$OPTARG;;
        p)
            ports=$OPTARG;;
        c)
            command=$OPTARG;;
    esac
done 

# 3.通过执行脚本进行端口检测
# 针对port中的内容，以空格替换字符串中的,
for port in ${ports//,/ }
do
    wait_for $ip $port
done 

# 执行command
# eval对一个字符串进行二次检测，将其当做命令进行执行
eval $command





